Lombok可以做到对已有Java代码在字节码层级的改变,它的目的在于让程序员少写一些“样板代码”;所谓样板代码是那些没有营养,却又不得不写的代码;像实体中定义的getter、setter、equals、hashcode、toString等方法).
Intelli IDEA安装Lombok插件
1.【Intelli IDEA】- 【Preferences】-【plugins】
- 搜索
lombok
,点击install
.
Lombok常用注解
@Getter/ @Setter:
注解在属性上;为属性提供 getting 和 setting 方法@ToString:
实现toString()方法@EqualsAndHashCode:
实现equals()方法和hashCode()方法@Data :
注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法@Log4j :
注解在类上;为类提供一个 属性名为log 的 log4j 日志对象@NoArgsConstructor:
注解在类上;为类提供一个无参的构造方法@AllArgsConstructor:
注解在类上;为类提供一个全参的构造方法@Builder:
注解在类上:实现一种Builder Patterns(生成器模式)的功能@SneakyThrows:
注解到方法上:可以实现在try…catch到异常后进行的throw操作@Synchronized:
注解到方法上:实现同步代码片段的功能
更多注解说明: 官方文档
Lombok使用
常用的模板代码注解化示例
1 |
|
示例执行结果
1 | bm1 = BasicModel(id=1, title=Lombok示例1, score=11.0, createTime=Sun Nov 27 17:14:17 CST 2016) |
上面的注解可以简化为如下
1 |
|
Lombok问题方案
问题: 父子类集成关系中中全参构造, 以及Builder模式构建对象时,父类属性不可见。
方案:
1 |
|
示例执行结果
1 | am1 = ArticleModel(super=BasicModel(id=1, title=Lombok示例1, score=11.0, createTime=Sun Nov 27 17:41:53 CST 2016), author=Elon.su, images=图片地址) |